const joi = require('@hapi/joi');
// // 如何是 swagger 请求时 就上token 反之 自己复制请求头
// exports.addTokenToHeader = (req, res, next) => {
//     console.log('getToken', getToken(req))

//     console.log('req', req.auth)
//     // 从全局对象中获取 Token
//     // if (req.url.indexOf('api') == -1 && req.headers.referer.indexOf('swagger') !== -1) {
//     //     req.headers.authorization = `Bearer ${newToken.value}`;
//     // }
//     next();
// };


// 创建日志中间件  为啦监听对接是哪个接口 方便查找
exports.printLog = (req, res, next) => {
    const time = new Date()
    console.log(`[${time.toLocaleString()}] ${req.method} ${req.url} ${req.body} ${req.query}`)
    next();
}

// 创建result响应消息及状态中间件

exports.result = (req, res, next) => {
    res.result = (err, status = 1) => {
        res.send({
            status,
            message: err instanceof Error ? err.message : err
        })
    }
    next();
}



// 错误中间件
exports.overallError = (err, req, res, next) => {

    // 获取当前接口的 URL 和请求方法
    // const url = req.originalUrl;
    // const method = req.method.toLowerCase();
    // const token = req.headers['authorization'];
    // console.log('url', url)
    // console.log('method', method)
    // console.log('token', token)
    // console.log('req.headers', req.headers)
    // 数据验证失败
    if (err instanceof joi.ValidationError) return res.result(err)
    // 身份认证失败
    if (err.name == 'UnauthorizedError') return res.result('身份认证失败', 401)
    // 未知错误
    res.result(err)
}